package testAxes;

import lib.kemi.graph_lib.DiagrPaintUtility;
import lib.kemi.graph_lib.GraphLib;

/**
 * @author Ignasi Puigdomenech
 */
public class TestAxes extends javax.swing.JFrame {
    protected static final String progName = "Test Axes";
    protected static TestAxes frame;
    protected static java.awt.Dimension windowSize;
    protected static java.awt.Dimension screenSize;
    static java.util.Locale engl = java.util.Locale.ENGLISH;
    java.io.PrintStream errPrintStream  =
       new java.io.PrintStream(
         new errFilteredStream(
           new java.io.ByteArrayOutputStream()));
    java.io.PrintStream outPrintStream  =
       new java.io.PrintStream(
         new outFilteredStream(
           new java.io.ByteArrayOutputStream()));
    GraphLib.PltData dd;
    float tHeight;
    float xMin; float xMax; float yMin; float yMax;
    boolean logX = false; boolean logY = false; boolean frameAxes = false;

    //<editor-fold defaultstate="collapsed" desc="Constructor">
    /** Creates new form TestAxes */
    public TestAxes() {
        initComponents();
        setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
        frame = this;

        //close window on ESC key
        javax.swing.Action escapeAction = new javax.swing.AbstractAction() {
            public void actionPerformed(java.awt.event.ActionEvent e) {
                quitTestAxes(); //close the frame here
            }};
        javax.swing.KeyStroke escKeyStroke = javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ESCAPE,0, false);
        getRootPane().getInputMap(javax.swing.JComponent.WHEN_IN_FOCUSED_WINDOW).put(escKeyStroke,"ESCAPE");
        getRootPane().getActionMap().put("ESCAPE", escapeAction);

        //Title
        frame.setTitle("Test Axes");
        windowSize = frame.getSize();
        screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        int left; int top;
        left = Math.max(55, (screenSize.width  - windowSize.width ) / 2);
        top = Math.max(10, (screenSize.height - windowSize.height) / 2);
        frame.setLocation(Math.min(screenSize.width-100, left),
                         Math.min(screenSize.height-100, top));

        java.awt.Font f = new java.awt.Font("monospaced", java.awt.Font.PLAIN, 12);
        jTextAreaA.setFont(f);
        jTabbedPane.setEnabledAt(1, false);
        jTabbedPane.setEnabledAt(2, false);
        jMenuStartOver.setEnabled(false);

        jScrollBarHeight.setFocusable(true);
        tHeight = 1.f;
        jScrollBarHeight.setValue(Math.round((float)(10d*tHeight)));

        jLabelStatus.setText("wating...");

        System.setOut(outPrintStream); // catches System.out messages
        System.setErr(errPrintStream); // catches error messages
        frame.setVisible(true);

    } // TestAxes()
    //</editor-fold>

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jTabbedPane = new javax.swing.JTabbedPane();
        jPanelParameters = new javax.swing.JPanel();
        jTextFieldYmin = new javax.swing.JTextField();
        jLabelYmin = new javax.swing.JLabel();
        jTextFieldXmin = new javax.swing.JTextField();
        jLabelXmin = new javax.swing.JLabel();
        jCheckLogX = new javax.swing.JCheckBox();
        jLabelHeight = new javax.swing.JLabel();
        jCheckLogY = new javax.swing.JCheckBox();
        jCheckFrame = new javax.swing.JCheckBox();
        jLabelHD = new javax.swing.JLabel();
        jScrollBarHeight = new javax.swing.JScrollBar();
        jLabelXmax = new javax.swing.JLabel();
        jLabelYmax = new javax.swing.JLabel();
        jTextFieldXmax = new javax.swing.JTextField();
        jTextFieldYmax = new javax.swing.JTextField();
        jButtonOK = new javax.swing.JButton();
        jButtonTestLine = new javax.swing.JButton();
        jScrollPaneMessg = new javax.swing.JScrollPane();
        jTextAreaA = new javax.swing.JTextArea();
        jPanelDiagram = new javax.swing.JPanel()   
        {   
            @Override
            public void paint(java.awt.Graphics g)   
            {   
                super.paint(g);   
                paintDiagrPanel(g);   
            }   
        };
        jPanelStatusBar = new javax.swing.JPanel();
        jLabelStatus = new javax.swing.JLabel();
        jMenuBar = new javax.swing.JMenuBar();
        jMenuFile = new javax.swing.JMenu();
        jMenuStartOver = new javax.swing.JMenuItem();
        jMenuFileXit = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentResized(java.awt.event.ComponentEvent evt) {
                formComponentResized(evt);
            }
        });
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
        });

        jTabbedPane.setTabLayoutPolicy(javax.swing.JTabbedPane.SCROLL_TAB_LAYOUT);
        jTabbedPane.setPreferredSize(new java.awt.Dimension(268, 249));

        jTextFieldYmin.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        jTextFieldYmin.setText("7");
        jTextFieldYmin.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                jTextFieldYminFocusGained(evt);
            }
            public void focusLost(java.awt.event.FocusEvent evt) {
                jTextFieldYminFocusLost(evt);
            }
        });
        jTextFieldYmin.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                jTextFieldYminKeyPressed(evt);
            }
            public void keyTyped(java.awt.event.KeyEvent evt) {
                jTextFieldYminKeyTyped(evt);
            }
        });

        jLabelYmin.setLabelFor(jTextFieldYmin);
        jLabelYmin.setText("<html>Y-min</html>");
        jLabelYmin.setEnabled(false);

        jTextFieldXmin.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        jTextFieldXmin.setText("7");
        jTextFieldXmin.setToolTipText("<html>\nThe temperature is needed either to calculate Debye-Hückel constants<br>\nin activity coefficient models, or to calculate Eh values<br>\nfrom pe: Eh = pe*(ln(10)*R*T)/F<br>\nValue must be between 0 and 300 (in Celsius)</html>");
        jTextFieldXmin.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                jTextFieldXminFocusGained(evt);
            }
            public void focusLost(java.awt.event.FocusEvent evt) {
                jTextFieldXminFocusLost(evt);
            }
        });
        jTextFieldXmin.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                jTextFieldXminKeyPressed(evt);
            }
            public void keyTyped(java.awt.event.KeyEvent evt) {
                jTextFieldXminKeyTyped(evt);
            }
        });

        jLabelXmin.setLabelFor(jTextFieldXmin);
        jLabelXmin.setText("<html>X-min</html>");
        jLabelXmin.setEnabled(false);

        jCheckLogX.setMnemonic(java.awt.event.KeyEvent.VK_L);
        jCheckLogX.setSelected(true);
        jCheckLogX.setText("<html><u>L</u>og x-axis</html>");

        jLabelHeight.setText("<html>Height of text in diagram:</html>");

        jCheckLogY.setMnemonic(java.awt.event.KeyEvent.VK_I);
        jCheckLogY.setSelected(true);
        jCheckLogY.setText("<html>log y-ax<u>I</u>s</html>");

        jCheckFrame.setMnemonic(java.awt.event.KeyEvent.VK_A);
        jCheckFrame.setText("<html>fr<u>A</u>me</html>");

        jLabelHD.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        jLabelHD.setText("1.0");
        jLabelHD.setMaximumSize(new java.awt.Dimension(15, 14));
        jLabelHD.setMinimumSize(new java.awt.Dimension(15, 14));
        jLabelHD.setPreferredSize(new java.awt.Dimension(15, 14));

        jScrollBarHeight.setMaximum(101);
        jScrollBarHeight.setMinimum(3);
        jScrollBarHeight.setOrientation(javax.swing.JScrollBar.HORIZONTAL);
        jScrollBarHeight.setValue(10);
        jScrollBarHeight.setVisibleAmount(1);
        jScrollBarHeight.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                jScrollBarHeightFocusGained(evt);
            }
            public void focusLost(java.awt.event.FocusEvent evt) {
                jScrollBarHeightFocusLost(evt);
            }
        });
        jScrollBarHeight.addAdjustmentListener(new java.awt.event.AdjustmentListener() {
            public void adjustmentValueChanged(java.awt.event.AdjustmentEvent evt) {
                jScrollBarHeightAdjustmentValueChanged(evt);
            }
        });

        jLabelXmax.setLabelFor(jTextFieldXmin);
        jLabelXmax.setText("<html>x-Max</html>");
        jLabelXmax.setEnabled(false);

        jLabelYmax.setLabelFor(jTextFieldYmin);
        jLabelYmax.setText("<html>y-Max</html>");
        jLabelYmax.setEnabled(false);

        jTextFieldXmax.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        jTextFieldXmax.setText("2");
        jTextFieldXmax.setToolTipText("<html>\nThe temperature is needed either to calculate Debye-Hückel constants<br>\nin activity coefficient models, or to calculate Eh values<br>\nfrom pe: Eh = pe*(ln(10)*R*T)/F<br>\nValue must be between 0 and 300 (in Celsius)</html>");
        jTextFieldXmax.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                jTextFieldXmaxFocusGained(evt);
            }
            public void focusLost(java.awt.event.FocusEvent evt) {
                jTextFieldXmaxFocusLost(evt);
            }
        });
        jTextFieldXmax.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                jTextFieldXmaxKeyPressed(evt);
            }
            public void keyTyped(java.awt.event.KeyEvent evt) {
                jTextFieldXmaxKeyTyped(evt);
            }
        });

        jTextFieldYmax.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        jTextFieldYmax.setText("2");
        jTextFieldYmax.setToolTipText("<html>\nThe temperature is needed either to calculate Debye-Hückel constants<br>\nin activity coefficient models, or to calculate Eh values<br>\nfrom pe: Eh = pe*(ln(10)*R*T)/F<br>\nValue must be between 0 and 300 (in Celsius)</html>");
        jTextFieldYmax.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                jTextFieldYmaxFocusGained(evt);
            }
            public void focusLost(java.awt.event.FocusEvent evt) {
                jTextFieldYmaxFocusLost(evt);
            }
        });
        jTextFieldYmax.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                jTextFieldYmaxKeyPressed(evt);
            }
            public void keyTyped(java.awt.event.KeyEvent evt) {
                jTextFieldYmaxKeyTyped(evt);
            }
        });

        jButtonOK.setMnemonic(java.awt.event.KeyEvent.VK_O);
        jButtonOK.setText("OK");
        jButtonOK.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonOKActionPerformed(evt);
            }
        });

        jButtonTestLine.setMnemonic(java.awt.event.KeyEvent.VK_T);
        jButtonTestLine.setText("Test dash line clipping");
        jButtonTestLine.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonTestLineActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanelParametersLayout = new javax.swing.GroupLayout(jPanelParameters);
        jPanelParameters.setLayout(jPanelParametersLayout);
        jPanelParametersLayout.setHorizontalGroup(
            jPanelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelParametersLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                        .addGroup(jPanelParametersLayout.createSequentialGroup()
                            .addComponent(jCheckLogX, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGap(18, 18, 18)
                            .addComponent(jCheckFrame, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGap(201, 201, 201))
                        .addGroup(jPanelParametersLayout.createSequentialGroup()
                            .addGroup(jPanelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(jPanelParametersLayout.createSequentialGroup()
                                    .addComponent(jLabelHeight, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addGap(3, 3, 3)
                                    .addComponent(jLabelHD, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(jScrollBarHeight, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                                .addGroup(jPanelParametersLayout.createSequentialGroup()
                                    .addComponent(jCheckLogY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(jButtonOK))
                                .addGroup(jPanelParametersLayout.createSequentialGroup()
                                    .addGroup(jPanelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                        .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanelParametersLayout.createSequentialGroup()
                                            .addComponent(jLabelYmin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                            .addComponent(jTextFieldYmin))
                                        .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanelParametersLayout.createSequentialGroup()
                                            .addComponent(jLabelXmin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                            .addComponent(jTextFieldXmin, javax.swing.GroupLayout.PREFERRED_SIZE, 82, javax.swing.GroupLayout.PREFERRED_SIZE)))
                                    .addGap(18, 18, 18)
                                    .addGroup(jPanelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addGroup(jPanelParametersLayout.createSequentialGroup()
                                            .addComponent(jLabelYmax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                            .addComponent(jTextFieldYmax, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE))
                                        .addGroup(jPanelParametersLayout.createSequentialGroup()
                                            .addComponent(jLabelXmax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                            .addGap(4, 4, 4)
                                            .addComponent(jTextFieldXmax, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE)))))
                            .addGap(116, 116, 116)))
                    .addComponent(jButtonTestLine))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanelParametersLayout.setVerticalGroup(
            jPanelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelParametersLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelXmin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jTextFieldXmin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabelXmax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jTextFieldXmax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelYmin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jTextFieldYmin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabelYmax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jTextFieldYmax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(13, 13, 13)
                .addGroup(jPanelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(jPanelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabelHeight, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jLabelHD, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(jScrollBarHeight, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(10, 10, 10)
                .addGroup(jPanelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jCheckFrame, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(jPanelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                        .addComponent(jButtonOK, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGroup(jPanelParametersLayout.createSequentialGroup()
                            .addComponent(jCheckLogX, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                            .addComponent(jCheckLogY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addGap(48, 48, 48)
                .addComponent(jButtonTestLine)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jTabbedPane.addTab("Parameters", jPanelParameters);

        jScrollPaneMessg.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
        jScrollPaneMessg.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

        jTextAreaA.setBackground(new java.awt.Color(255, 255, 204));
        jTextAreaA.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                jTextAreaAKeyPressed(evt);
            }
            public void keyTyped(java.awt.event.KeyEvent evt) {
                jTextAreaAKeyTyped(evt);
            }
        });
        jScrollPaneMessg.setViewportView(jTextAreaA);

        jTabbedPane.addTab("Messages", jScrollPaneMessg);

        jPanelDiagram.setBackground(new java.awt.Color(255, 255, 255));

        javax.swing.GroupLayout jPanelDiagramLayout = new javax.swing.GroupLayout(jPanelDiagram);
        jPanelDiagram.setLayout(jPanelDiagramLayout);
        jPanelDiagramLayout.setHorizontalGroup(
            jPanelDiagramLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 359, Short.MAX_VALUE)
        );
        jPanelDiagramLayout.setVerticalGroup(
            jPanelDiagramLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 224, Short.MAX_VALUE)
        );

        jTabbedPane.addTab("Diagram", jPanelDiagram);

        jPanelStatusBar.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        jLabelStatus.setText("01234567890");

        javax.swing.GroupLayout jPanelStatusBarLayout = new javax.swing.GroupLayout(jPanelStatusBar);
        jPanelStatusBar.setLayout(jPanelStatusBarLayout);
        jPanelStatusBarLayout.setHorizontalGroup(
            jPanelStatusBarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelStatusBarLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabelStatus, javax.swing.GroupLayout.PREFERRED_SIZE, 325, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(25, Short.MAX_VALUE))
        );
        jPanelStatusBarLayout.setVerticalGroup(
            jPanelStatusBarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jLabelStatus)
        );

        jMenuFile.setMnemonic(java.awt.event.KeyEvent.VK_F);
        jMenuFile.setText("File");

        jMenuStartOver.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.ALT_MASK));
        jMenuStartOver.setText("Start over");
        jMenuStartOver.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuStartOverActionPerformed(evt);
            }
        });
        jMenuFile.add(jMenuStartOver);

        jMenuFileXit.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X, java.awt.event.InputEvent.ALT_MASK));
        jMenuFileXit.setText("Exit");
        jMenuFileXit.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuFileXitActionPerformed(evt);
            }
        });
        jMenuFile.add(jMenuFileXit);

        jMenuBar.add(jMenuFile);

        setJMenuBar(jMenuBar);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jTabbedPane, javax.swing.GroupLayout.DEFAULT_SIZE, 364, Short.MAX_VALUE)
            .addComponent(jPanelStatusBar, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addComponent(jTabbedPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanelStatusBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    //<editor-fold defaultstate="collapsed" desc="Events">
    private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
        quitTestAxes();
    }//GEN-LAST:event_formWindowClosing

    private void jMenuFileXitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuFileXitActionPerformed
        quitTestAxes();
    }//GEN-LAST:event_jMenuFileXitActionPerformed

    private void formComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_formComponentResized
        int w = Math.round((float)windowSize.getWidth());
        int h = Math.round((float)windowSize.getHeight());
        if(this.getHeight()<h){this.setSize(this.getWidth(), h);}
        if(this.getWidth()<w){this.setSize(w,this.getHeight());}
        if(jTabbedPane.getWidth()>this.getWidth()) {jTabbedPane.setSize(this.getWidth(), jTabbedPane.getHeight());}
    }//GEN-LAST:event_formComponentResized

    private void jTextAreaAKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextAreaAKeyTyped
        evt.consume();
    }//GEN-LAST:event_jTextAreaAKeyTyped

    private void jTextAreaAKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextAreaAKeyPressed
        int ctrl = java.awt.event.InputEvent.CTRL_DOWN_MASK;
        if (((evt.getModifiersEx() & ctrl) == ctrl) &&
            (evt.getKeyCode() == java.awt.event.KeyEvent.VK_V)) {evt.consume();}
        if(evt.getKeyChar() == java.awt.event.KeyEvent.VK_DELETE) {evt.consume();}
        if(evt.getKeyChar() == java.awt.event.KeyEvent.VK_BACK_SPACE) {evt.consume();}
    }//GEN-LAST:event_jTextAreaAKeyPressed

    private void jScrollBarHeightAdjustmentValueChanged(java.awt.event.AdjustmentEvent evt) {//GEN-FIRST:event_jScrollBarHeightAdjustmentValueChanged
        jLabelHD.setText(String.valueOf((float)jScrollBarHeight.getValue()/10f));
    }//GEN-LAST:event_jScrollBarHeightAdjustmentValueChanged

    private void jScrollBarHeightFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jScrollBarHeightFocusGained
        jScrollBarHeight.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0,0,0)));
    }//GEN-LAST:event_jScrollBarHeightFocusGained

    private void jScrollBarHeightFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jScrollBarHeightFocusLost
        jScrollBarHeight.setBorder(null);
    }//GEN-LAST:event_jScrollBarHeightFocusLost

    private void jTextFieldYminKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextFieldYminKeyTyped
        if (!Character.isDigit(evt.getKeyChar()) &&
            evt.getKeyChar() != 'e' && evt.getKeyChar() != 'E' &&
            evt.getKeyChar() != '-' && evt.getKeyChar() != '.') {evt.consume();}
    }//GEN-LAST:event_jTextFieldYminKeyTyped

    private void jTextFieldYminFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTextFieldYminFocusLost
        validateYmin();
    }//GEN-LAST:event_jTextFieldYminFocusLost

    private void jTextFieldYminKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextFieldYminKeyPressed
        if(evt.getKeyChar() == java.awt.event.KeyEvent.VK_ENTER) {
            validateYmin();}
    }//GEN-LAST:event_jTextFieldYminKeyPressed

    private void jTextFieldXminKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextFieldXminKeyPressed
        if(evt.getKeyChar() == java.awt.event.KeyEvent.VK_ENTER) {
            validateXmin();}
    }//GEN-LAST:event_jTextFieldXminKeyPressed

    private void jTextFieldXminFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTextFieldXminFocusLost
        validateXmin();
    }//GEN-LAST:event_jTextFieldXminFocusLost

    private void jTextFieldXminKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextFieldXminKeyTyped
        if (!Character.isDigit(evt.getKeyChar()) &&
            evt.getKeyChar() != '-' &&
            evt.getKeyChar() != 'e' && evt.getKeyChar() != 'E' &&
            evt.getKeyChar() != '.') {evt.consume();}
    }//GEN-LAST:event_jTextFieldXminKeyTyped

    private void jTextFieldXmaxFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTextFieldXmaxFocusLost
        validateXmax();
    }//GEN-LAST:event_jTextFieldXmaxFocusLost

    private void jTextFieldXmaxKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextFieldXmaxKeyPressed
        if(evt.getKeyChar() == java.awt.event.KeyEvent.VK_ENTER) {
            validateXmax();}
    }//GEN-LAST:event_jTextFieldXmaxKeyPressed

    private void jTextFieldXmaxKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextFieldXmaxKeyTyped
        if (!Character.isDigit(evt.getKeyChar()) &&
            evt.getKeyChar() != 'e' && evt.getKeyChar() != 'E' &&
            evt.getKeyChar() != '-' && evt.getKeyChar() != '.') {evt.consume();}
    }//GEN-LAST:event_jTextFieldXmaxKeyTyped

    private void jTextFieldYmaxFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTextFieldYmaxFocusLost
        validateYmax();
    }//GEN-LAST:event_jTextFieldYmaxFocusLost

    private void jTextFieldYmaxKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextFieldYmaxKeyPressed
        if(evt.getKeyChar() == java.awt.event.KeyEvent.VK_ENTER) {
            validateYmax();}
    }//GEN-LAST:event_jTextFieldYmaxKeyPressed

    private void jTextFieldYmaxKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextFieldYmaxKeyTyped
        if (!Character.isDigit(evt.getKeyChar()) &&
            evt.getKeyChar() != 'e' && evt.getKeyChar() != 'E' &&
            evt.getKeyChar() != '-' && evt.getKeyChar() != '.') {evt.consume();}
    }//GEN-LAST:event_jTextFieldYmaxKeyTyped

    private void jButtonOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOKActionPerformed
        xMin = Float.parseFloat(jTextFieldXmin.getText());
        xMax = Float.parseFloat(jTextFieldXmax.getText());
        yMin = Float.parseFloat(jTextFieldYmin.getText());
        yMax = Float.parseFloat(jTextFieldYmax.getText());
        tHeight = jScrollBarHeight.getValue()/10.f;
        tHeight = Math.min(10.f,Math.max(tHeight, 0.3f));
        if(jCheckFrame.isSelected()) {frameAxes = true;} else {frameAxes = false;}
        if(jCheckLogX.isSelected()) {logX = true;} else {logX = false;}
        if(jCheckLogY.isSelected()) {logY = true;} else {logY = false;}

        jLabelStatus.setText("plotting...");

        drawPlot();
        jTabbedPane.setEnabledAt(2, true);
        jTabbedPane.setSelectedComponent(jPanelDiagram);
        jMenuStartOver.setEnabled(true);
        jLabelStatus.setText("waiting...");
    }//GEN-LAST:event_jButtonOKActionPerformed

    private void jMenuStartOverActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuStartOverActionPerformed
        jMenuStartOver.setEnabled(false);
        jTabbedPane.setEnabledAt(2, false);
        jTabbedPane.setSelectedComponent(jPanelParameters);
        frame.requestFocus();
    }//GEN-LAST:event_jMenuStartOverActionPerformed

    private void jTextFieldYminFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTextFieldYminFocusGained
        jTextFieldYmin.setSelectionStart(0);
        jTextFieldYmin.setSelectionEnd(jTextFieldYmin.getText().length());
    }//GEN-LAST:event_jTextFieldYminFocusGained

    private void jTextFieldYmaxFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTextFieldYmaxFocusGained
        jTextFieldYmax.setSelectionStart(0);
        jTextFieldYmax.setSelectionEnd(jTextFieldYmax.getText().length());
    }//GEN-LAST:event_jTextFieldYmaxFocusGained

    private void jTextFieldXminFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTextFieldXminFocusGained
        jTextFieldXmin.setSelectionStart(0);
        jTextFieldXmin.setSelectionEnd(jTextFieldXmin.getText().length());
    }//GEN-LAST:event_jTextFieldXminFocusGained

    private void jTextFieldXmaxFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTextFieldXmaxFocusGained
        jTextFieldXmax.setSelectionStart(0);
        jTextFieldXmax.setSelectionEnd(jTextFieldXmax.getText().length());
    }//GEN-LAST:event_jTextFieldXmaxFocusGained

    private void jButtonTestLineActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonTestLineActionPerformed

        jLabelStatus.setText("plotting...");

        drawTest();
        jTabbedPane.setEnabledAt(2, true);
        jTabbedPane.setSelectedComponent(jPanelDiagram);
        jMenuStartOver.setEnabled(true);
        jLabelStatus.setText("waiting...");

    }//GEN-LAST:event_jButtonTestLineActionPerformed
    //</editor-fold>

    //<editor-fold defaultstate="collapsed" desc="diverse Methods">
    private void quitTestAxes() {
        this.dispose();
        return;
    } // quitTestAxes()

    private void validateYmin() {
        try{yMin = Float.parseFloat(jTextFieldYmin.getText());
            jTextFieldYmin.setText(Float.toString(yMin));} //try
        catch (NumberFormatException nfe) {
        javax.swing.JOptionPane.showMessageDialog(this,"Wrong numeric format\n"+
                "\nPlease enter a floating point number.",
                progName, javax.swing.JOptionPane.WARNING_MESSAGE);
        jTextFieldYmin.setText(Float.toString(yMin));
        jTextFieldYmin.requestFocus();} //catch
    } // validateYmin()

    private void validateXmin() {
        try{xMin = Float.parseFloat(jTextFieldXmin.getText());
            jTextFieldXmin.setText(Float.toString(xMin));} //try
        catch (NumberFormatException nfe) {
        javax.swing.JOptionPane.showMessageDialog(this,"Wrong numeric format\n"+
                "\nPlease enter a floating point number.",
                progName, javax.swing.JOptionPane.WARNING_MESSAGE);
        jTextFieldXmin.setText(Float.toString(xMin));
        jTextFieldXmin.requestFocus();} //catch
    } // validateXmin()

    private void validateYmax() {
        try{yMax = Float.parseFloat(jTextFieldYmax.getText());
            jTextFieldYmax.setText(Float.toString(yMax));} //try
        catch (NumberFormatException nfe) {
        javax.swing.JOptionPane.showMessageDialog (this,"Wrong numeric format\n"+
                "\nPlease enter a floating point number.",
                progName, javax.swing.JOptionPane.WARNING_MESSAGE);
        jTextFieldYmax.setText(Float.toString(yMax));
        jTextFieldYmax.requestFocus();} //catch
    } // validateYmax()

    private void validateXmax() {
        try{xMax = Float.parseFloat(jTextFieldXmax.getText());
            jTextFieldXmax.setText(Float.toString(xMax));} //try
        catch (NumberFormatException nfe) {
        javax.swing.JOptionPane.showMessageDialog (this,"Wrong numeric format\n"+
                "\nPlease enter a floating point number.",
                progName, javax.swing.JOptionPane.WARNING_MESSAGE);
        jTextFieldXmax.setText(Float.toString(xMax));
        jTextFieldXmax.requestFocus();} //catch
    } // validateXmax()

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="drawTest()">
protected void drawTest() {
    double[] xData = new double[201]; double[] yData = new double[xData.length];
    for(int i=0; i < xData.length; i++) {
        xData[i]= i*5; yData[i] = Math.sin(Math.toRadians(xData[i]));
    }
    // -------------------------------------------------------------------
    //                  Draw Axes
    //---- create a DiagrData instance
    dd = new GraphLib.PltData();
    //---- create a GraphLib instance
    GraphLib g = new GraphLib();
    try{g.start(dd, new java.io.File("test_lines.plt"), true);}
    catch (GraphLib.openPlotFileException ex) {System.err.println("Error "+ex.toString());}
    dd.axisInfo = false;
    
    yMin = -1.1f; yMax = 0.6f;
    xMin = 0; xMax = 1000; logX=false; logY=false; frameAxes = true;
    float xAxl = 12; float yAxl = 5;
    float xOr = 3; float yOr = 2;
    float heightAx = (0.03f*Math.max(xAxl, yAxl));
    g.setIsFormula(false);
    g.sym(xOr+0.5*xAxl, yOr+1, heightAx, "°±µ·ºΔμ•∆", -45, 1, false);
    g.setIsFormula(true);
    // draw axes
    try{g.axes(xMin, xMax, yMin, yMax,
            xOr,yOr, xAxl,yAxl, heightAx,
            logX, logY, frameAxes);}
    catch (Exception ex) {
        System.err.println("Error: "+ex.getMessage());
    }
    g.lineType(1);
    //double[] xd = {-20d,200d};double[] yd = {0d,1d};
    double[] xd = new double[500];
    double[] yd = new double[xd.length];
    for(int i=0; i<xd.length; i++) {xd[i]=i*1000/xd.length;}
    for(int i=0; i<yd.length; i++) {yd[i]=Math.sin(Math.toRadians(xd[i]));}
    g.line(xd, yd);

    g.moveToDrawTo(xOr-heightAx*0.7071f, yOr+heightAx*0.7071f, 0);
    g.moveToDrawTo(xOr, yOr, 1);
    g.moveToDrawTo(xOr+heightAx*6f*0.7071f, yOr+heightAx*6f*0.7071f, 1);
    g.moveToDrawTo(xOr+heightAx*5f*0.7071f, yOr+heightAx*7f*0.7071f, 1);
    g.setIsFormula(true);
    g.sym(xOr, yOr, heightAx, "     M", 135, 1, false);

    yMin = 0.7f; yMax = 1.1f;
    yOr = yOr+yAxl+1;
    yAxl = 2;
    // draw axes
    try{g.axes(xMin, xMax, yMin, yMax,
            xOr,yOr, xAxl,yAxl, heightAx,
            logX, logY, frameAxes);}
    catch (Exception ex) {
        System.err.println("Error: "+ex.getMessage());
    }
    g.lineType(4);
    g.line(xd, yd);

    // -------------------------------------------------------------------
    //                  Finished
    g.end();
} //drawTest()
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="drawPlot()">
protected void drawPlot() {
    // -------------------------------------------------------------------
    //                  Draw Axes
    //---- create a DiagrData instance
    dd = new GraphLib.PltData();
    //---- create a GraphLib instance
    GraphLib g = new GraphLib();
    try{g.start(dd, new java.io.File("test_axes.plt"), true);}
    catch (GraphLib.openPlotFileException ex) {System.err.println("Error "+ex.toString());}
    dd.axisInfo = false;
    g.setIsFormula(true);
    float xAxl = 15; float yAxl = 10;
    float xOr = 4; float yOr = 3;
    float heightAx = (0.03f*Math.max(xAxl, yAxl)) * tHeight;
    /*g.moveToDrawTo(xOr-heightAx*0.7071f, yOr+heightAx*0.7071f, 0);
    g.moveToDrawTo(xOr, yOr, 1);
    g.moveToDrawTo(xOr+heightAx*8f*0.7071f, yOr+heightAx*8f*0.7071f, 1);
    g.moveToDrawTo(xOr+heightAx*7f*0.7071f, yOr+heightAx*9f*0.7071f, 1);
    g.sym(xOr, yOr, heightAx, "       M", 45, 0, false);*/
    g.sym(xOr+0.5*xAxl, yOr+1, heightAx, "P`CO`2'' CO3-2", 80, 0, false);
    // draw axes
    try{g.axes(xMin, xMax, yMin, yMax,
            xOr,yOr, xAxl,yAxl, heightAx,
            logX, logY, frameAxes);}
    catch (Exception ex) {
        System.err.println("Error: "+ex.getMessage());
    }
    // -------------------------------------------------------------------
    //                  Finished
    g.end();
} //drawPlot()
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="paintDiagrPanel">
    private void paintDiagrPanel(java.awt.Graphics g) {
        java.awt.Graphics2D g2D = (java.awt.Graphics2D)g;
        DiagrPaintUtility dpu = new DiagrPaintUtility();
        dpu.paintDiagram(g2D, jPanelDiagram.getSize(), dd, false);
    }
//</editor-fold>

    //<editor-fold defaultstate="collapsed" desc="main">
    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        // get SystemLookAndFeel
        try { javax.swing.UIManager.setLookAndFeel(
                        javax.swing.UIManager.getSystemLookAndFeelClassName());}
        catch (Exception ex) {}

        // show the main window
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                TestAxes sed = new TestAxes();//.setVisible(true);
                // in the main class the following is defined:
                //      private static TestAxes frame;
                // in the constructor TestAxes() there is following statement:
                //      frame = this;
            }
        });
    } // main(args[])
    //</editor-fold>

//<editor-fold defaultstate="collapsed" desc="FilteredStreams">
class errFilteredStream extends java.io.FilterOutputStream {
    public errFilteredStream(java.io.OutputStream aStream) {
        super(aStream);
      } // constructor
    @Override
    public void write(byte b[]) throws java.io.IOException {
        String aString = new String(b);
        jTabbedPane.setEnabledAt(1, true);
        jTabbedPane.setSelectedComponent(jScrollPaneMessg);
        jTextAreaA.append(aString);
        jTextAreaA.setSelectionStart(Integer.MAX_VALUE);
    }
    @Override
    public void write(byte b[], int off, int len) throws java.io.IOException {
        String aString = new String(b , off , len);
        jTabbedPane.setEnabledAt(1, true);
        jTabbedPane.setSelectedComponent(jScrollPaneMessg);
        jTextAreaA.append(aString);
        jTextAreaA.setSelectionStart(Integer.MAX_VALUE);
    } // write
} // class errFilteredStream

class outFilteredStream extends java.io.FilterOutputStream {
    public outFilteredStream(java.io.OutputStream aStream) {
      super(aStream);
    } // constructor
    @Override
    public void write(byte b[]) throws java.io.IOException {
        String aString = new String(b);
        jTabbedPane.setEnabledAt(1, true);
        jTextAreaA.append(aString);
        jTextAreaA.setSelectionStart(Integer.MAX_VALUE);
    }
    @Override
    public void write(byte b[], int off, int len) throws java.io.IOException {
        String aString = new String(b , off , len);
        jTabbedPane.setEnabledAt(1, true);
        jTextAreaA.append(aString);
        jTextAreaA.setSelectionStart(Integer.MAX_VALUE);
    } // write
} // class outFilteredStream
//</editor-fold>

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButtonOK;
    private javax.swing.JButton jButtonTestLine;
    private javax.swing.JCheckBox jCheckFrame;
    private javax.swing.JCheckBox jCheckLogX;
    private javax.swing.JCheckBox jCheckLogY;
    private javax.swing.JLabel jLabelHD;
    private javax.swing.JLabel jLabelHeight;
    private javax.swing.JLabel jLabelStatus;
    private javax.swing.JLabel jLabelXmax;
    private javax.swing.JLabel jLabelXmin;
    private javax.swing.JLabel jLabelYmax;
    private javax.swing.JLabel jLabelYmin;
    private javax.swing.JMenuBar jMenuBar;
    private javax.swing.JMenu jMenuFile;
    private javax.swing.JMenuItem jMenuFileXit;
    private javax.swing.JMenuItem jMenuStartOver;
    private javax.swing.JPanel jPanelDiagram;
    private javax.swing.JPanel jPanelParameters;
    private javax.swing.JPanel jPanelStatusBar;
    private javax.swing.JScrollBar jScrollBarHeight;
    private javax.swing.JScrollPane jScrollPaneMessg;
    private javax.swing.JTabbedPane jTabbedPane;
    private javax.swing.JTextArea jTextAreaA;
    private javax.swing.JTextField jTextFieldXmax;
    private javax.swing.JTextField jTextFieldXmin;
    private javax.swing.JTextField jTextFieldYmax;
    private javax.swing.JTextField jTextFieldYmin;
    // End of variables declaration//GEN-END:variables

} // class TestAxes
